class Solution {
    public int rob(int[] nums) {
        if(nums.length==0||nums==null){
            return 0;
        }
        if(nums.length==1){
            return nums[0];
        }
        if(nums.length==2){
            return Math.max(nums[0],nums[1]);
        }
        int[] dp=new int[nums.length-1];
        dp[0]=nums[0];
        dp[1]=Math.max(dp[0],dp[1]);
        for(int i=2;i<nums.length-1;i++){
            dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        int [] dp1=new int[nums.length-1];
        dp1[0]=nums[1];
        dp1[1]=Math.max(nums[1],nums[2]);
        for(int i=3;i<nums.length;i++){
            dp1[i-1]=Math.max(dp1[i-3]+nums[i],dp1[i-2]);
        }
        return Math.max(dp[nums.length-2],dp1[nums.length-2]);
    }
}